
//统一的请求路径
const baseURL='http://localhost:8080/';

//获取到token
const getToken=()=>{
    return wx.getStorageSync('token') || ''
}

//封装请求函数
const request=(options)=>{
    return new Promise((resolve,reject)=>{
        const header={
            'content-type':'application/json',
            ...options.header
        };

        //添加统一的请求头到token
        const token = getToken();
        if(token){
            header['Authorization'] = `Bearer ${token}`;
        }
        wx.request({
            url:options.url.startsWith('http://') ? options.url:baseURL+options.url,
            method:options.method || "GET",
            data:options.data || {},
            header:header,
            success:(res)=>{
                if(res.data.code===200){
                //请求成功
                resolve(res.data);
            }else if(res.data.code===401){
                // token失效，可以在这里处理登录过期
                wx.removeStorageSync('token');
                wx.navigateTo({
                    url:'/pages/login/login',
                });
                wx.showToast({
                  title: '当前未登录，请先登录',
                  icon: 'error' 
                })
                reject('登录已过期，请重新登录');
            }else{
                // 其他错误
                reject(res.data || '请求失败');
            }
            },
            fail:(err)=>{
                reject(err||'网络异常')
            },
        });
       
    })

}

//导出不同请求方法的快捷方式
const http = {
    get: (url, data, options = {}) => {
    return request({
      url,
      data,
      method: 'GET',
      ...options
    });
  },

  post: (url, data, options = {}) => {
    return request({
      url,
      data,
      method: 'POST',
      ...options
    });
  },
  put: (url, data, options = {}) => {
    return request({
      url,
      data,
      method: 'PUT',
      ...options
    });
  },
  delete: (url, data, options = {}) => {
    return request({
      url,
      data,
      method: 'DELETE',
      ...options
    });
  }
};

// 同时支持ES6和CommonJS导出
export default http;
module.exports = http;

// 同时支持 CommonJS 和 ES6 模块导出
if (typeof module !== 'undefined' && module.exports) {
  module.exports = http;
}


/** 使用方式 */
// const http = require('../../../utils/https.js');

//  GET请求
// http.get('/api/users', { page: 1 })
//   .then(res => {
//     console.log('请求成功', res);
//   })
//   .catch(err => {
//     console.error('请求失败', err);
//   });

//  POST请求
// http.post('/api/login', { username: 'test', password: '123456' })
//   .then(res => {
//     console.log('登录成功', res);
//     wx.setStorageSync('token', res.token);
//   })
//   .catch(err => {
//     console.error('登录失败', err);
//   });

